import "@site/src/languages/highlight";

# QLearner的类对象

**描述：**

&emsp;&emsp;用于创建QLearner对象的类。

**用法示例：**
```tl
local ML = require("ML")
local qLearner = ML.QLearner()
```

## pack

**类型：** 函数。

**描述：**

&emsp;&emsp;根据给定的数值的字节长度的提示和条件数值构造状态值。

**签名：**
```tl
pack: function(self: QLearnerClass, hints: {integer}, values: {integer}): --[[state]] integer
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| hints | \{integer} | 表示条件数值的字节长度。 |
| values | \{integer} | 离散值形式的条件值。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| integer | 生成的状态值。 |

## unpack

**类型：** 函数。

**描述：**

&emsp;&emsp;通过给定的字节长度的提示解析状态值以获取条件值。

**签名：**
```tl
unpack: function(self: QLearnerClass, hints: {integer}, state: integer): {integer}
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| hints | \{integer} | 表示条件数值的字节长度。 |
| state | integer | 要解析的状态整数。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| \{integer} | 包含离散值形式的条件值列表。 |

## __call

**类型：** 元方法。

**描述：**

&emsp;&emsp;创建一个新的QLearner对象，并设定好gamma、alpha和maxQ参数。

**签名：**
```tl
metamethod __call: function(
		self: QLearnerClass,
		gamma?: number --[[0.5]],
		alpha?: number --[[0.5]],
		maxQ?: number --[[100.0]]
	): QLearner
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| gamma | number | 计算奖励的调节因子。默认为0.5。 |
| alpha | number | 更新Q值的学习速率。默认为0.5。 |
| maxQ | number | 最大Q值。默认为100.0。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| QLearner | 新创建的QLearner对象。 |